function newFunction() {
    let reg_acc = /^[\w-]{4,20}$/;
    let reg_pw = /^[\da-zA-Z]{8,20}$/;
    let acc = document.getElementById("login_id");
    let pw = document.getElementById("password");
    return { reg_acc, acc, reg_pw, pw };
}

$("#submit").click(function () {
    let { reg_acc, acc, reg_pw, pw } = newFunction();
    if (!regTest(reg_acc, acc)) {
        alertCustom("用户名不符合要求,必须由字母,数字,中划线,下划线组成,长度在四到二十位之间");
        $("#login_id").val("");
        $("#login_id")[0].focus();
    } else if (!regTest(reg_pw, pw)) {
        alertCustom("密码不符合要求,长度在八到二十位之间");
        $("#password").val("");
        $("#password")[0].focus();
    } else {
        $.ajax({
            url: "http://localhost:3000/api",
            data: {
                type: "register",
                username: $("#login_id").val(),
                password: $("#password").val()
            },
            success: res => {
                // 解析后端返回数据
                res = JSON.parse(res);
                // console.log(res);
                // 根据状态判断成功or失败，做出对应处理
                if (res.status === 0) {
                    // 此处替换成使用html+css+js单例模式的提示框
                    alertCustom("用户名重复，注册失败");
                    $("#login_id").val("");
                    $("#login_id")[0].focus();
                } else if (res.status === 1) {
                    if (confirm("注册成功，是否跳转到登录")) {
                        location.href = "http://localhost:3000/login.html";
                    }
                }
            }
        })
    }
})

$("#login_id").keyup(function () {
    console.log("on")
    let { reg_acc, acc } = newFunction();
    if (!regTest(reg_acc, acc)) {
        $("#login_id_prompt").show();
    }else{
        $("#login_id_prompt").hide()
    }
})
$("#password").keyup(function () {
    console.log("on")
    let { reg_pw, pw } = newFunction();
    if (!regTest(reg_pw, pw)) {
        $("#login_pw_prompt").show();
    }else{
        $("#login_pw_prompt").hide()
    }
})
function regTest(reg, element) {
    // 正则检测
    if (!(reg.test(element.value))) {
        element.className = "error";
        return false;
    } else {
        element.className = "";
        return true;
    }
}


